package ink.tiptop.utils.date;

import java.time.format.DateTimeFormatter;
import java.util.HashMap;
import java.util.Map;

/**
 * @author Tiptop_ZJF
 * @ClassName: TimeUtils
 * @DESC 3.0.0时间工具类
 * @Date: 2019/8/3 11:05
 * @since JDK 1.8
 */

public class DateBaseHolder {


    /**
     * 获取时间转换类
     *
     * @param pattern
     * @return
     */
    public static DateTimeFormatter getFormatter(Pattern pattern) {
        return DateTimeFormatter.ofPattern(getPattern(pattern));
    }

    protected static Map<Pattern, String> map = new HashMap<>();

    static {
        Pattern[] values = Pattern.values();
        for (Pattern value : values) {
            map.put(value, value.pattern);
        }
    }

    /**
     * 根据枚举获取对应的正则
     *
     * @param pattern
     * @return
     */
    protected static String getPattern(Pattern pattern) {
        return map.get(pattern);
    }

    public enum Pattern {
        /**
         * 年月日
         */
        YMD("yyyyMMdd"),

        Y_S_M_S_D("yyyy/MM/dd"),

        yyMMdd("yyMMdd"),

        MMdd("MMdd"),
        /**
         * 时分秒
         */
        HMS("HHmmss"),
        /**
         * 时分
         */
        HH_MM("HH:mm"),
        HH("HH"),
        /**
         * 年月日时分秒
         */
        YMDHMS("yyyyMMddHHmmss"),
        /**
         * 年-月-日
         */
        Y_M_D("yyyy-MM-dd"),

        /**
         * 月-日-时-分-秒
         */
        MMDDhhmmss("MMddHHmmss"),

        /**
         * 年-月-日 时:分:秒
         */
        Y_M_D_H_M_S("yyyy-MM-dd HH:mm:ss"),

        yyyyMMdd_H_M_S("yyyy/MM/dd HH:mm:ss");

        public String pattern;

        Pattern(String pattern) {
            this.pattern = pattern;
        }
    }

}
